import java.util.*;

public class Solution399 {
    public double[] calcEquation(List<List<String>> equations, double[] values, List<List<String>> queries) {
        Map<String,String> map=new HashMap<>();
        Map<String,Double> value=new HashMap<>();
        for (int i=0;i<equations.size();i++) {
            List<String> equation=equations.get(i);
            if (!map.containsKey(equation.get(0))){
                map.put(equation.get(0),equation.get(0));
                value.put(equation.get(0),1.0);
            }
            if (!map.containsKey(equation.get(1))){
                map.put(equation.get(1),equation.get(1));
                value.put(equation.get(1),1.0);
            }
            String x=find(map,equation.get(0));
            String y=find(map,equation.get(1));
            if (!x.equals(y)){
                double times=values[i]*value.get(equation.get(1))/value.get(equation.get(0));
                for (Map.Entry<String, String> stringStringEntry : map.entrySet()) {
                    if (find(map,stringStringEntry.getKey()).equals(x)){
                        value.put(stringStringEntry.getKey(),value.get(stringStringEntry.getKey())*times);
                    }
                }
                map.put(x,y);
            }
        }
        double[] doubles=new double[queries.size()];
        for (int i=0;i<queries.size();i++){
            String x=queries.get(i).get(0);
            String y=queries.get(i).get(1);
            if (!map.containsKey(x) || !map.containsKey(y)){
                doubles[i]=-1.0;
                continue;
            }
            if (find(map,x).equals(find(map,y))){
                doubles[i]=value.get(x)/value.get(y);
            }else{
                doubles[i]=-1.0;
            }
        }
        return doubles;
    }

    String find(Map<String,String> map,String t){
        while (!map.get(t).equals(t)){
            t=map.get(t);
        }
        return t;
    }

    public static void main(String[] args) {
        List<List<String>> equ=new ArrayList<>();
        List<String> l1=new ArrayList<>();
        l1.add("a");l1.add("b");equ.add(l1);
        List<String> l2=new ArrayList<>();
        l2.add("e");l2.add("f");equ.add(l2);
        List<String> l8=new ArrayList<>();
        l8.add("b");l8.add("e");equ.add(l8);
        List<List<String>> que=new ArrayList<>();
        List<String> l3=new ArrayList<>();
        l3.add("b");l3.add("a");que.add(l3);
        List<String> l4=new ArrayList<>();
        l4.add("a");l4.add("f");que.add(l4);
        List<String> l5=new ArrayList<>();
        l5.add("a");l5.add("e");que.add(l5);
        List<String> l6=new ArrayList<>();
        l6.add("a");l6.add("a");que.add(l6);
        List<String> l7=new ArrayList<>();
        l7.add("f");l7.add("e");que.add(l7);
        System.out.println(Arrays.toString(new Solution399().calcEquation(equ,new double[]{3.4,1.4,2.3},que)));
    }
}
